// https://vite.dev/config/
import {fileURLToPath, URL} from 'node:url';
import path from 'path';
import {defineConfig, loadEnv} from 'vite';
import vue from '@vitejs/plugin-vue';
import vueJsx from '@vitejs/plugin-vue-jsx';
import vueDevTools from 'vite-plugin-vue-devtools';
import {createSvgIconsPlugin} from 'vite-plugin-svg-icons';
import qiankun from 'vite-plugin-qiankun';
import Components from 'unplugin-vue-components/vite';
import {AntDesignVueResolver} from 'unplugin-vue-components/resolvers';

export default defineConfig(({mode, command}) => {
  // 获取当前工作目录
  const root = process.cwd();
  // 获取环境变量
  // const env = loadEnv(mode, root);

  return {
    root, // 项目根目录
    base: './', // 项目部署的基础路径
    // base: qiankunWindow.__POWERED_BY_QIANKUN__ ? '/base' : '/',
    publicDir: fileURLToPath(new URL('./public', import.meta.url)), // 无需处理的静态资源位置
    assetsInclude: fileURLToPath(new URL('./src/assets', import.meta.url)), // 需要处理的静态资源位置
    plugins: [
      vue(),
      vueJsx(),
      // vueDevTools(),
      qiankun('web-base-app', {
        // 与主应用注册的name一致
        useDevMode: true,
      }),
      // svg图标配置项
      createSvgIconsPlugin({
        // 指定需要缓存的图标文件夹
        iconDirs: [path.resolve(process.cwd(), 'src/assets/svg-icon')],
        // 指定symbolId格式
        symbolId: 'icon-[dir]-[name]',
      }),
      Components({
        resolvers: [
          // 自动导入 AntDesignVue
          AntDesignVueResolver({
            importStyle: false, // css in js
          }),
        ],
        dts: fileURLToPath(new URL('./types/components.d.ts', import.meta.url)),
      }),
    ],

    resolve: {
      alias: {
        '@': fileURLToPath(new URL('./src', import.meta.url)),
        '#': fileURLToPath(new URL('./types', import.meta.url)),
      },
    },
    // 打包配置
    build: {
      // 关闭 sourcemap 报错不会映射到源码
      sourcemap: false,
      target: 'esnext',
      outDir: 'dist',
    },
    // 运行后本地预览的服务器
    server: {
      headers: {
        'Access-Control-Allow-Origin': '*',
      },
      port: 7100,
      host: '0.0.0.0', // 指定服务器应该监听哪个 IP 地址。 如果将此设置为 0.0.0.0 或者 true 将监听所有地址，包括局域网和公网地址。
      open: false, // 启动后是否自动打开浏览器
      cors: true, // 是否开启CORS跨域

      // proxy: {
      //   '/api': {
      //     target: env.VITE_API_URL,
      //     changeOrigin: true,
      //     rewrite: (path) => path.replace(/^\/api/, ''),
      //   },
      // },
    },
  };
});
